package com.ovidiojf.fieldplan.equipe;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

public class EquipeDAOHibernate implements EquipeDAO {

	Session session;
		
	@Override
	public void salvar(Equipe equipe) {
		session.save(equipe);
		
//		for (Atleta atleta : equipe.getAtletas()) {
//			session.save(atleta);
//		}
	}

	@Override
	public void alterar(Equipe equipe) {
		session.update(equipe);
	}

	@Override
	public void excluir(Equipe equipe) {
		session.delete(equipe);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Equipe> listar() {
		Criteria lista = session.createCriteria(Equipe.class);
		return lista.list();
	}

	@Override
	public Equipe pesquisarPorNome(String nome) {
		Query consulta = session.createQuery("from Equipe e where e.nome like :nome");
		consulta.setString("nome", "%"+nome+"%");
		return (Equipe) consulta.uniqueResult();
	}

	public Session getSession() {
		return session;
	}

	public void setSession(Session session) {
		this.session = session;
	}

	public Equipe pesquisarPorId(String value) {
		return pesquisarPorId(new Integer(value));
	}

	public Equipe pesquisarPorId(Integer id) {
//		Query query = session.createQuery("from Equipe e where e.id = :id");
//		query.setInteger("id", integer);
//		return (Equipe)query.uniqueResult();
		
		Criteria criteria = this.session.createCriteria(Equipe.class);
		criteria.add(Restrictions.idEq(new Integer(id)));
		
		return (Equipe) criteria.uniqueResult();
		
	}

	
	
}
